// go:build linux | | freebsd | | openbsd | | netbsd | |蜻蜓

// 2014 go作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package syscall

import "unsafe"

// fcntl64Syscall通常是SYS_FCNTL，但在32位Linux上被flock_Linux_32位重写。成为SYS_FCNTL64。
var fcntl64Syscall uintptr = SYS_FCNTL

// FcntlFlock为F_GETLK、F_SETLK或F_SETLKW命令执行fcntl系统调用。
func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
	_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
	if errno == 0 {
		return nil
	}
	return errno
}
